#ifndef FRASSERVER_H
#define FRASSERVER_H

#include <QMainWindow>
#include <QTcpServer>
#include <QTcpSocket>
#include <QSqlTableModel>
#include <QSqlRecord>
#include <QThread>
#include "FaceObject/faceobject.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class FrasServer;
}
QT_END_NAMESPACE

// Fras服务器
class FrasServer : public QMainWindow
{
    Q_OBJECT

public:
    FrasServer(QWidget *parent = nullptr);
    ~FrasServer();

protected slots:
    void readData();                   // 读取客户端发送的人脸数据
    void recvFaceID(int64_t face_id);  // 接收fobj信号传递过来的face_id的槽函数

signals:
    void queryInfo(cv::Mat &img);      // 传递人脸图像的查询信号函数（信号函数只将自己收到的参数传递给目标槽函数，因此不需要添加实现）

private:
    Ui::FrasServer *ui;
    QTcpServer server_;          // 服务器对象
    QTcpSocket *socket_;         // 与客户端通信的套接字
    quint64 data_size_;          // 存储接收数据的大小
    QSqlTableModel tbl_model_;   // 数据表模型，用于查询数据
    QThread face_query_thread_;  // 用于执行人脸查询的单独线程
};
#endif // FRASSERVER_H
